package com.jeesite.modules.digitalize.controller;

import com.jeesite.modules.digitalize.util.minio.MinioFileUtil;
import com.jeesite.modules.digitalize.util.response.ResultVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;


/**
 * @author patronli
 * @Description:
 * @date 2023年08月17日 10:16:47
 */
@RestController
@Api(tags ="数字-文件操作")
@RequestMapping(value = "${adminPath}/digitalize/file")
public class FileController {

    @Autowired
    private MinioFileUtil minioFileUtil;


    /**
     * @date 13:56:00
     * @author patronli
     * @Description: 文件上传
     */

    @ApiOperation("文件上传[族库系统文件上传唯一接口，资源库、族库文件等等]")
    @PostMapping("upload")
    public ResultVo upload(MultipartFile file) {
        return minioFileUtil.uploadFile(file);
    }

    /**
     * @date 2023年08月17日 13:56:14
     * @author patronli
     * @Description: 文件下载/返回给前台
     */
    @ApiOperation("文件下载/预览")
    @GetMapping("/download")
    public void download(HttpServletResponse response, String url) {
        minioFileUtil.downloadFile(response, url);
    }

//    @ApiOperation("文件夹下载")
//    @GetMapping("/downloadFolder")
//    public void downloadFolder(HttpServletResponse response) throws Exception {
//        minioFileUtil.downloadFolder(response);
//    }

    /**
     * @date 2023年08月23日 10:42:53
     * @author patronli
     * @Description: 文件删除
     */
    @ApiOperation("删除文件")
    @DeleteMapping("/del")
    public ResultVo del(String url) {
        return minioFileUtil.deleteBucketFile(url);
    }


//    @ApiOperation("文件预览")
//    @GetMapping("/preview")
//    public void preview(String url) {
//        try {
//            System.out.println(minioFileUtil.getFileDownloadUrl(bucketName, url, null));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }


}
